package com.hy.mydesktop.client.component.factory;

import com.extjs.gxt.ui.client.widget.MessageBox;
import com.hy.mydesktop.client.component.meta.MessageBoxModelEnum;
import com.hy.mydesktop.shared.persistence.domain.gxt.GxtComponentMetaNodeModel;

/**
 * 
 * <ul>
 * <li>开发作者：汤莉</li>
 * <li>设计日期：2010-8-29；时间：下午03:22:37</li>
 * <li>类型名称：MessageBoxFactory</li>
 * <li>设计目的：</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 */
public class MessageBoxFactory {

	/**
	 * 
	 * <ul>
	 * <li>方法含义：创建MessageBox控件</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-29；时间：下午下午03:22:43</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param gxtComponentMetaModel
	 * @return
	 */
	public static MessageBox createMessageBox(GxtComponentMetaNodeModel gxtComponentMetaModel)
	{
		return configureMessageBox(gxtComponentMetaModel);
	}
	
	
	/**
	 * 
	 * <ul>
	 * <li>方法含义：配置MessageBox控件的属性</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-29；时间：下午下午03:23:17</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param gxtComponentMetaModel
	 * @return
	 */
	private static MessageBox configureMessageBox(GxtComponentMetaNodeModel gxtComponentMetaModel)
	{
		MessageBox box=createDefaultMessageBox();
		
		
		//根据MessageBox的类型设置属性值
		if(gxtComponentMetaModel.get(MessageBoxModelEnum.TYPE.name().toLowerCase())=="alert"){
			//设置Alert的标题和信息
			String title=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase());
			String message=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase());
			
			return MessageBox.alert(title, message, null);
				
		}else if(gxtComponentMetaModel.get(MessageBoxModelEnum.TYPE.name().toLowerCase())=="confirm"){//���MessageBox������ΪConfirm
			//设置confirm的标题和信息
			String title=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase());
			String message=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase());
			
			return MessageBox.confirm(title, message, null);
			
			
		}else if(gxtComponentMetaModel.get(MessageBoxModelEnum.TYPE.name().toLowerCase())=="prompt"){//���MessageBox������ΪPrompt(������ʾ��)
			//设置prompt的标题和信息
			String title=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase());
			String message=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase());
			
			return MessageBox.prompt(title, message, null);
			
			
		}else if(gxtComponentMetaModel.get(MessageBoxModelEnum.TYPE.name().toLowerCase())=="progress"){//���MessageBox������ΪProgress���������
			//设置progress的标题和信息和进度
			String title=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase());
			String message=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase());
			String progress=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.PROGRESSTEXT.name().toLowerCase());
		
			return MessageBox.progress(title, message, progress);
			
		}else if(gxtComponentMetaModel.get(MessageBoxModelEnum.TYPE.name().toLowerCase())=="wait"){//���MessageBox������Ϊwait
			//设置wait的标题和信息和进度
			String title=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase());
			String message=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase());
			String progress=(String)gxtComponentMetaModel.get(MessageBoxModelEnum.PROGRESSTEXT.name().toLowerCase());
		
			return MessageBox.wait(title, message, progress);
			
		}else{
			//自定义提示框
			if(gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase())!=null){
				//设置标题属性
				box.setTitle((String)gxtComponentMetaModel.get(MessageBoxModelEnum.TITLE.name().toLowerCase()));
				
			}
			if(gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase())!=null){
				//设置信息属性
				box.setMessage((String)gxtComponentMetaModel.get(MessageBoxModelEnum.MESSAGE.name().toLowerCase()));
				
			}
			if(gxtComponentMetaModel.get(MessageBoxModelEnum.ICON.name().toLowerCase())!=null){
				//设置图标属性
				box.setIcon((String)gxtComponentMetaModel.get(MessageBoxModelEnum.ICON.name().toLowerCase()));
				
			}
			if(gxtComponentMetaModel.get(MessageBoxModelEnum.BUTTONS.name().toLowerCase())!=null){
				//设置按钮属性
				box.setButtons((String)gxtComponentMetaModel.get(MessageBoxModelEnum.BUTTONS.name().toLowerCase()));
				
			}
			if(gxtComponentMetaModel.get(MessageBoxModelEnum.MODAL.name().toLowerCase())!=null){
				//设置模式窗口
				box.setModal((Boolean)gxtComponentMetaModel.get(MessageBoxModelEnum.MODAL.name().toLowerCase()));
			}
		}
		
		return box;
	}
	/**
	 * 
	 * <ul>
	 * <li>方法含义：创建默认的MessageBox控件</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-29；时间：下午下午03:23:43</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 */
	private static MessageBox createDefaultMessageBox()
	{
		MessageBox box=new MessageBox();
//		box.setButtons(MessageBox.OK);
//		box.setMessage("MessageBox");
//		box.show();
		
		return box;
	}
}
